package com.lxl.workbench.service;

import com.lxl.settings.entity.User;
import com.lxl.workbench.entity.Category;
import com.lxl.workbench.entity.CategoryStaff;
import com.lxl.workbench.entity.CommonStaff;
import com.lxl.workbench.entity.Curator;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 北上寻海
 */
public interface StaffService {
    /**
     * 根据前端发来的条件，在普通员工里面查员工信息
     * @param staffName 员工姓名
     * @param staffSex 员工性别
     * @return 包含员工的list集合
     * @throws SQLException SQL异常
     */
    List<CommonStaff> queryStaffFromCommon(String staffName,String staffSex) throws SQLException;

    /**
     * 根据前端发来的条件，在书目管理员里面查员工信息
     * @param staffName 员工姓名
     * @param staffSex 员工性别
     * @return 包含员工的list集合
     * @throws SQLException SQL异常
     */
    List<CategoryStaff> queryStaffFromCategory(String staffName, String staffSex) throws SQLException;

    /**
     * 根据管里的书目查询它的书目管理员
     * @param categoryId 书目的id
     * @return 相关的书目管理员的集合
     * @throws SQLException SQL异常
     */
    List<CategoryStaff> selectCategoryStaffByManageType(String categoryId) throws SQLException;

    /**
     * 根据id查普通员工
     * @param id 待查员工的id
     * @return 包含员工的list集合
     * @throws SQLException SQL异常
     */
    List<CommonStaff> selectCommonStaffById(String id) throws SQLException;

    /**
     * 升职，把普通员工的信息封装成书目管理员插入，而普通员工要删除
     * @param categoryStaff 待插入的书目管理员的信息
     * @param id 根据id删普通员工表里面的该员工
     * @throws SQLException SQL异常
     */
    void promoteStaff(CategoryStaff categoryStaff ,String id) throws SQLException;


    /**
     * 辞退员工要把tbl_user里面的也删掉，所以要把user_id查出来
     * @param delIds 所有选中的id
     * @return 查到的commonStaff，里面包含user_id
     * @throws SQLException SQL异常
     */
    List<CommonStaff> selectCommonStaffForUserId(String [] delIds) throws SQLException;

    /**
     * 辞退员工要把tbl_user里面的也删掉，所以要把user_id查出来
     * @param delIds 所有选中的id
     * @return 查到的categoryStaff，里面包含user_id
     * @throws SQLException SQL异常
     */
    List<CategoryStaff> selectCategoryStaffForUserId(String [] delIds) throws SQLException;


    /**
     * 辞退员工，要删员工表（普通员工和书目管理员）和user表
     * @param delIds 用于查员工的ids
     * @param userIds user表的ids
     * @throws SQLException SQL异常
     */
    void resignStaffByIds (String [] delIds,String [] userIds) throws SQLException;

    /**
     * 降职，书目管理员降为普通员工，查书目管理员的信息拿出封装成普通员工
     * @param commonStaffList  普通员工
     * @param categoryIds 书目管理员要删除，根据id删
     * @throws SQLException SQL异常
     */
    void demoteStaffByIds(List<CommonStaff> commonStaffList,String [] categoryIds) throws SQLException;

    /**
     * 根据id查询curator
     * @param id 待查询id
     * @return curator
     * @throws SQLException sql
     */
    List<Curator> selectCuratorById(String id) throws SQLException;


    /**
     * 批量查询curator，根据ids数组
     * @param ids 数组
     * @return curator结果集
     * @throws SQLException sql
     */
    List<Curator> selectCuratorByIds(String [] ids) throws SQLException;


    /**
     * 添加普通员工（user+commonStaff）
     * @param user 拥护
     * @param commonStaff 普通员工
     * @throws SQLException sql
     */
    void addCommonStaffByCondition(User user, CommonStaff commonStaff) throws SQLException;

    /**
     *
     * 添加普通员工（user+commonStaff）
     * @param user 拥护
     * @param categoryStaff 书目管理员
     * @throws SQLException sql
     */
    void addCategoryStaffByCondition(User user,CategoryStaff categoryStaff) throws SQLException;
}
